package de.hwrberlin.remo.algorithm.steps;

/**
 * This interface describes an single step within the inferenz
 * algorithm execution. An AlgorithmStep can be revert and re-perform
 * with the aid of the methods revert() and perform.
 * 
 * @author Mario Sänger (IT 09)
 * @version 1.0
 *
 */
public interface AlgorithmStep {
	
	/**
	 * Returns an short name of this step.
	 * 
	 * @return short textual representation
	 */
	public String getLabel();
	
	/**
	 * Returns a detailed description of this step
	 * 
	 * @return
	 */
	public String getExplanation();
	
	/**
	 * Perform the step.
	 */
	public void perform();
	
	/**
	 * Revert the step.
	 */
	public void revert();
}